BitTorrent is currently one of the most popular methods of distributing large files over the Internet. For a given file, the BitTorrent protocol embodies four main roles: an initial seeder, new seeders, a tracker, and peers. Initial seeders, new seeders, and peers are all transient clients; trackers are typically web servers. The initial seeder is the source of the file, and operates by dividing a file into small pieces, creating a metadata description of the file and sending this description to the tracker. Peers discover this file metadata description, usually as a .torrent file, through some out-of-band mechanism (e.g., a web page) and then begin looking for pieces of the file. Peers contact a central tracker to bootstrap their knowledge of other peers and seeds, and the tracker returns a randomized subset of other peers and seeds. Initially, only the initial seeder has pieces of a file, but soon peers are able to exchange missing pieces with each other. Once a peer acquires all of the pieces of a file, it becomes a new seeder. This collection of clients actively sharing a file is called a swarm.
In some client-based peer-to-peer (P2P) systems (e.g., the VUZE® client developed by Vuze, Inc. of Palo Alto, Calif.), file descriptors and other metadata are stored in a distributed hash table (DHT), in which all clients participate, and any node can be assigned the role of tracker if its unique identification number is equal or close to the hash of a given file's descriptor. This is mainly used as a backup mechanism when the original tracker is offline or otherwise not responding to requests for the file. However, the DHT is also a way to distribute a file without a central tracker at all or to locate additional peers that are not connected to a tracker.
Vivaldi is a virtual positioning algorithm that computes a position for every peer in the system such that the distance between two peers equals their round trip network ping time (RTT).